home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0073
/
bsp2.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-01-19
|
4KB
|
93 lines
PROGRAM Beispiel_2; (* Direktes Einbinden der Sprites *)
(* in das Programm. *)
(* Der Code wird zwar länger, das *)
(* Programm aber auch schneller; *)
(* vor allem aber benötigt es dann*)
(* keine externen Dateien mehr. *)
uses crt,dos,graph;
VAR gd,gm,x,y,i : integer;
s1,s2,s3,s4 : word; (* Größe der Sprites *)
p1,p2,p3,p4 : pointer; (* Pointer-Variablen für die Sprites *)
CONST pos1 : Array [1..4] of pointtype =
((x:20; y:237),(x:40; y:237),(x:40; y:180),(x:20; y:185));
(* Die Koordinaten des "Tors" *)
(* Zunächst müßen aus den gespeicherten Sprites (Endung .SPR) Objekt- *)
(* Dateien (Endung .OBJ) gemacht werden. *)
(* Dies geschieht durch Aufruf des mit Turbo Pascal mitgelieferten *)
(* Hilfsprogramms BINOBJ.EXE. *)
(* Lesen Sie zum Gebrauch am besten das Turbo-Handbuch *)
(* Hier wurden die Objekt-Dateien erzeugt mit dem Befehl *)
(* "binobj bild1.spr bild1.obj bild1" usw.. *)
PROCEDURE Bild1; External; {$L bild1.obj} (* Einbinden der OBJ- *)
PROCEDURE Bild2; External; {$L bild2.obj} (* Dateien in das *)
PROCEDURE Bild3; External; {$L bild3.obj} (* Programm. *)
PROCEDURE Ball; External; {$L ball.obj}
BEGIN
gd := detect; initgraph (gd,gm,getenv('bgipfad'));
(* statt gentenv... muß hier der Pfad zu dem Verzeichnis stehen, in dem *)
(* sich Ihre BGI-Dateien befinden. Oder Sie lösen das so wie ich; *)
(* ich habe den Pfad zu meinen BGI- und CHR-Dateien in einer Environment- *)
(* Variablen mit Namen BGIPFAD gesetzt (das bedeutet: in die Autoexec.bat *)
(* Datei kommt der Befehl "set bgipfad=C:\PASCAL\BGI", wobei natürlich *)
(* das richtige Verzeichnis angegeben werden muß). Diese Variable kann *)
(* man dann bequem mit Getenv('bgipfad') im Programm abfragen. *)
(* Dies geht allerdings erst ab Turbo Pascal 5.0... *)
p1 := addr(bild1); (* Die Adressen der extern eingebundenen *)
p2 := addr(bild2); (* Sprites werden den Pointer-Variablen *)
p3 := addr(bild3); (* zugewiesen. *)
p4 := addr(ball);
(* Von hier ab gehts gleich, wie in BSP1.PAS *)
clearviewport;
line (0,237,getmaxx,237); (* ein bißchen Verzierung... *)
setfillstyle (8,white);
fillpoly (4,pos1);
settextjustify (centertext,centertext);
outtextxy (getmaxx div 2,50,'Beispiel 2 : Sprites im Code eingebunden');
x := 600; y := 200;
putimage (260,228,p4^,xorput); (* Ball ausgeben *)
For i := 1 to 21 do (* Der Spieler nimmt Anlauf... *)
BEGIN
putimage (x,y,p1^,xorput); (* erst Bild ausgeben... *)
delay (100-2*i); (* warten... *)
putimage (x,y,p1^,xorput); (* und wieder löschen. *)
dec (x,4);
putimage (x,y,p2^,xorput); (* und jetzt dasselbe nochmal *)
delay (100-2*i);
putimage (x,y,p2^,xorput);
dec (x,4);
putimage (x,y,p1^,xorput);
delay (100-2*i);
putimage (x,y,p1^,xorput);
dec (x,4);
putimage (x,y,p3^,xorput);
delay (100-2*i);
putimage (x,y,p3^,xorput);
dec (x,4);
END;
putimage (x,y,p3^,xorput);
y := 228;
putimage (260,228,p4^,xorput); (* Ball löschen *)
While x > 30 do
BEGIN
putimage (x,y,p4^,xorput); (* und jetzt bewegen *)
delay ((300 - x) div 4);
putimage (x,y,p4^,xorput);
dec(x,4);
END;
outtextxy (getmaxx div 2,280,'Bitte Taste drücken...');
Repeat Until keypressed;
closegraph;
END.